package com.itcam.interview.pro00.thread;

import org.springframework.util.StopWatch;

/**
 * @author : Cammy.Wu
 * Description : 
 */

public class ThreadInterruptionExample {
    /**
     * 主方法，程序的入口点
     * 此方法演示了如何中断一个正在执行的线程
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 创建一个新的线程对象，使用 Lambda 表达式定义线程要执行的任务
        Thread thread = new Thread(() -> {
            // 模拟长时间任务，使用 for 循环执行 1000000 次迭代
            for (int i = 0; i < 1000000; i++) {
                // 检查当前线程的中断标志
                if (Thread.currentThread().isInterrupted()) {
                    // 如果中断标志被设置为 true，打印中断信息并结束任务
                    System.out.println("线程被中断，提前结束任务");
                    return;
                }
                // 这里可以是实际的任务代码，例如打印当前迭代的数字
                System.out.println(i);
            }
        });
        // 启动线程，开始执行任务
        thread.start();

        // 主线程休眠 100 毫秒，确保子线程有足够的时间开始执行任务
        try {
            System.out.println("我开始休眠啦");
            Thread.sleep(100);
            System.out.println("我结束休眠啦");
        } catch (InterruptedException e) {
            // 若主线程在休眠过程中被中断，打印异常堆栈信息
            e.printStackTrace();
        }
        // 调用 interrupt() 方法中断子线程
        thread.interrupt();
    }

}
